home *** CD-ROM | disk | FTP | other *** search
- USES Graph;
-
- TYPE
-
- TByteArray = Array [0..16384] Of Byte;
- PByteArray = ^TByteArray;
-
- VAR I, J: Integer; BiosFont: PByteArray; F: Text;
-
- PROCEDURE GetBiosFont; ASSEMBLER;
- ASM
- PUSH BP;
- PUSH DS;
- MOV AX, 1130H;
- MOV BX, 0100H;
- INT 10H;
- MOV BX, BP;
- POP DS;
- POP BP;
- MOV WORD PTR [BiosFont], BX;
- MOV WORD PTR [BiosFont+2], ES;
- END;
-
- FUNCTION Hex (Num: Word; Nib: Byte): String; ASSEMBLER;
- ASM
- LES DI, @Result; { ES:DI -> return }
- XOR CH, CH;
- MOV CL, Nib; { String length }
- MOV ES:[DI], CL;
- JCXZ @@3; { Check for zero }
- ADD DI, CX;
- MOV BX, Num;
- STD; { Strings backwards }
- @@1:
- MOV AL, BL; { Current nibble }
- AND AL, $0F;
- OR AL, $30 ; { Convert to ascii }
- CMP AL, $3A;
- JB @@2; { Contains A-F patch }
- ADD AL, $07;
- @@2:
- STOSB; { Store the byte }
- SHR BX, 1;
- SHR BX, 1;
- SHR BX, 1; { Roll of nible done }
- SHR BX, 1;
- LOOP @@1;
- @@3:
- CLD; { Reset direction }
- END;
-
- BEGIN
- InitGraph(I, J, '');
- GetBiosFont;
- Assign(F, 'BiosFont.Bin');
- Rewrite(F);
- WriteLn(F, 'BiosFont: Array [0..4096] Of Byte = (');
- For J := 0 To 255 Do Begin
- For I := 0 To 15 Do Begin
- Write(F, '$', Hex(BiosFont^[J*16+I], 2), ',');
- End;
- WriteLn(F);
- End;
- WriteLn(F, '0);');
- Close(F);
- CloseGraph;
- END.
-